package web

import (
	"gitee.com/tietang/terrace-go/v2/base"
	"gitee.com/tietang/terrace-go/v2/base/starter/iiris"
	"gitee.com/tietang/terrace-go/v2/example/apis"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/hero"
)

func init() {
	base.RegisterApi(&AccountApi{})
}

//账户：接口层
type AccountApi struct {
	iiris.BaseIrisApi
}

func (a *AccountApi) Init() {
	a.GroupRouter = iiris.Iris().Party("/v1/account")
	a.GroupRouter.Post("/create", a.createHandler)
	//通过iris hero包依赖注入
	//使用hero.Handler函数动态创建一个iris handler
	//通过path参数来创建
	a.GroupRouter.Get("/get/{accountNo:string}", hero.Handler(get))
	//1. 注册一个实例,从请求体中读取JSON数据
	hero.Register(func(ctx iris.Context) (dto apis.AccountCreateDTO) {
		ctx.ReadJSON(&dto)
		return dto
	})

	//2. 注入到方法

}

//定义账户创建接口/v1/account/create
func (api *AccountApi) createHandler(context iris.Context) {

	account := apis.AccountCreateDTO{}
	err := context.ReadJSON(&account)
	r := base.Res{
		Code: base.ResCodeOk,
	}
	if err != nil {
		r.Code = base.ResCodeRequestParamsError
		r.Message = err.Error()
		context.JSON(&r)
		return
	}

	dto, err := apis.AccountDTO{}, nil //todo

	if err != nil {
		r.Code = base.ResCodeInnerServerError
		r.Message = err.Error()
	}
	r.Data = dto

	context.JSON(r)

}

func get(accountNo string) *apis.AccountDTO {
	return &apis.AccountDTO{}
}
